package cn.iocoder.yudao.module.lowcode.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 低代码模块配置属性
 * 
 * @author 芋道源码
 */
@ConfigurationProperties(prefix = "yudao.lowcode")
@Data
public class YudaoLowCodeProperties {

    /**
     * 是否启用低代码模块
     */
    private Boolean enabled = true;

    // Magic API 配置暂时注释，避免类路径问题
    // private MagicApiConfig magicApi = new MagicApiConfig();

    /**
     * Groovy 脚本配置
     */
    private GroovyScriptConfig groovyScript = new GroovyScriptConfig();

    // Magic API 配置类暂时注释
    /*
    @Data
    public static class MagicApiConfig {
        private Boolean enabled = true;
        private String webPath = "/magic/web";
        private String resourcePath = "/magic/";
        private Boolean securityEnabled = true;
    }
    */

    @Data
    public static class GroovyScriptConfig {
        /**
         * 是否启用 Groovy 脚本
         */
        private Boolean enabled = true;

        /**
         * 脚本执行超时时间（毫秒）
         */
        private Long executionTimeout = 30000L;

        /**
         * 缓存配置
         */
        private CacheConfig cache = new CacheConfig();

        @Data
        public static class CacheConfig {
            /**
             * 脚本类缓存最大数量
             */
            private Integer maxClassCacheSize = 500;

            /**
             * 脚本实例缓存最大数量
             */
            private Integer maxInstanceCacheSize = 100;

            /**
             * 缓存过期时间（分钟）
             */
            private Integer expireAfterWriteMinutes = 30;
        }
    }
}